/**
 * 用户信息，包含头部信息展示与退出管理
 */
define(function (require, exports, module) {
    var $ = require("jquery");
    var util = require("util");

    var AuthorizeController = {
        init: function () {
            this._userInfo = null;
            this.bind();

            this._updateUserInfo();
        },
        bind: function () {
            $('#js_logout').on('click', $.proxy(this.logout, this));

            // 显示顶部下拉弹层
            var $menu;
            $("#js_system, #js_userinfo").on("click", function (e) {
                $menu = $(this).next();
                $menu.show();
                e.stopPropagation();
            });
            //点击桌面隐藏弹层
            $(document).click(function (e) {
                if ($menu) {
                    $menu.hide();
                    $menu = null;
                }
            });
        },
        /**
         * 退出登录，并跳转登录页面
         */
        logout: function () {
            util.myAjax({
                url: G_CONFIG.api_prefix + "site/logout",
                type: "get",
                dataType: "json",
                complete: function () {
                    util.goToLoginPage('');
                }
            })
        },
        /**
         * 获取用户信息
         * @returns {{userName:string}}
         */
        getUserInfo: function () {
            return this._userInfo;
        },
        _flushView: function () {
            $('#js_user_name').text(this._userInfo.userName);
        },
        /**
         * 获取用户信息
         */
        _updateUserInfo: function () {
            var self = this;
            util.myAjax({
                url: G_CONFIG.api_prefix + "site/login-data",
                type: "get",
                dataType: "json",
                data: {
                    NEED_TOKEN: false
                },
                success: function (res) {
                    if (res['retCode'] == 0) {
                        var data = res['data'];

                        if (data['isGuest'] === false) {
                            self._userInfo = data;

                            self._flushView();
                        } else {
                            util.goToLoginPage();
                        }
                    } else {
                        util.goToLoginPage();
                    }
                },
                error: function () {
                    util.goToLoginPage();
                }
            })
        }
    };

    AuthorizeController.init();

    return AuthorizeController;
});